<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <div id="app">
    <parent></parent>
  </div>
  <!-- 当子组件复用时，每一处复用的子组件其内容都有些不同，然而又不方便修改子组件时，可以使用插槽 -->
  <template id="parent">
    <div style="background-color: darkgrey;width: 300px;height: 150px;">
      <child>
        <!-- 给子组件内的html标签加上slot属性后，子组件内的内容就会被渲染到子组件上 -->
        <header style="background-color: rgb(138, 129, 0);" slot="header">我是header</header>
        <footer style="background-color: darkturquoise;" slot="footer">我是footer</footer>
      </child>
    </div>
  </template>

  <template id="child">
    <div>
      <div style="background-color: darkorange;">我是body</div>
      <!-- 只有在这里修改插槽的位置，才会影响html解构，因为是在子组件中渲染 -->
      <slot name="header"></slot>
      <slot name="footer"></slot>
    </div>
  </template>
  <script src="../vue.js"></script>
  <script>
    const child = {
      template: '#child',
      data() { return {} }
    };

    const parent = {
      template: "#parent",
      data() {
        return {}
      },
      components: {
        child
      }
    };

    Vue.component('parent', parent);
    const app = new Vue({
      el: '#app'
    })
  </script>
</body>

</html>